#include <iostream>
#include <set>

using namespace std;

//
// Int -> String -> Char
//

// int n = 12345
/*
         商    余数
n / 10   1234  5
1234/10  123   4
123/10   12    3
12/10    1     2
1/10     0     1
*/

int sumDigits(int n) {

}

// Happy number
// n -> 1 是欢乐数 -> 一直调用 sumDigits 如果得到 1，就结束返回 true
// n -> INF 不是欢乐数，这种情况有可能发生么？不存在
// n -> 收敛不到 1 ？？ 什么情况？

// n 数位平方和
// 9    -> 81
// 99   -> 162
// 999  -> 243
// 9999 -> 324
// ...
// 9999999999999 -> 1053

// 猜想：
// 平方数位和一定会是一个 从 n 位数逐渐收敛，4 位数，3 位数，2 位数，1 位数 ->1
// 平方数位和一定会是一个 从 n 位数逐渐收敛，4 位数，3 位数，2 位数，循环

// 我们就猜想，如果存在循环，那么这个循环里，最多也就包含到 3 位数
// 计算到底有多少个这样的循环

// 当我们需要频繁的在一个集合里查找元素是否存在的时候，不优先考虑数，而是优先考虑使用 set

bool isHappyNumber(int n) {
  set<int> results {n};
}